package protocollo;

import java.io.IOException;
import java.util.ArrayList;
import java.util.StringTokenizer;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;

public class CmdParserSeggio {

    public static final String CABINA_LIBERA = "CABINA_LIBERA";
    public static final String CABINA_OCCUPATA = "CABINA_OCCUPATA";
    public static final String RISULTATI_SENATO = "RISULTATI_SENATO";
    public static final String RISULTATI_CAMERA = "RISULTATI_CAMERA";
    public static final String RISULTATI_REFERENDUM = "RISULTATI_REFERENDUM";

    public static String parseAndRunCommand(String command) throws IOException, TransformerConfigurationException, TransformerException, ParserConfigurationException {

        DAOCmdSeggio DAOcs = new DAOCmdSeggio();

        StringTokenizer strTok = new StringTokenizer(command);

        String cmd = strTok.nextToken();

        switch (cmd) {

            case CABINA_LIBERA:
                System.out.println(command);
                boolean statoL = Boolean.parseBoolean(strTok.nextToken());
                String ip_libera = strTok.nextToken();
                System.out.println("stato della CAMBINA_LIBERA " + statoL + " su " + ip_libera);
                return DAOcs.statoLibero(ip_libera,statoL) + "\n";

            case RISULTATI_SENATO:  
                //String[] risSenato = null;
                ArrayList<String> strListSenato = new ArrayList<String>();
                while (strTok.hasMoreTokens()){
                    strListSenato.add(strTok.nextToken());
                }
                System.out.println("ricevo i risultati del senato :");
                return DAOcs.risultatiSenato(strListSenato.toString()) + "\n";
                
            case RISULTATI_CAMERA:
                ArrayList<String> strListCamera = new ArrayList<String>();
                while (strTok.hasMoreTokens()){
                    strListCamera.add(strTok.nextToken());
                }                
                System.out.println("ricevo i risultati del camera :");
                return DAOcs.risultatiCamera(strListCamera.toString()) + "\n";
                
            case RISULTATI_REFERENDUM:
                
               ArrayList<String> strListReferendum = new ArrayList<String>();
                while (strTok.hasMoreTokens()){
                    strListReferendum.add(strTok.nextToken());
                }                
                System.out.println("ricevo i risultati del referendum :");
                return DAOcs.risultatiCamera(strListReferendum.toString()) + "\n";
                
            default:
                return "error";
        }
    }
}
